package com.tedu.springboot2302.entity;

import java.io.Serializable;

/**
 * 使用当前类的每一个实例来表示一个注册用户信息
 */
public class User implements Serializable {
    private String username;
    private String password;
    private String nickname;
    private int age;

    /*
    来固定版本号，这样序列化的对象就可以进行反序列化了。

    JAVA建议我们实现Serializable接口的类主动定义序列化版本号,若不定义编译器会在编译时
    根据当前类结构生成版本号,但弊端是只要这个类内容发生了改变,那么再次编译时版本号就会改变,直接的后果就是之前序列化的对象都无法再进行反序列化.

    如果自行定义版本号,那么可以在改变类内容的同时不改变版本号,这样一来,反序列化以前的
    对象时对象输入流会采取兼容模式,即:当前类的属性在反序列化的对象中还存在的则直接还原,不存在的就是用该属性的默认值

    出现该异常的解决办法:

    1. 首先使用上述常量固定版本号
    2. 重新序列化对象(将对象通过ObjectOutputStream重新序列化并写出)
    3. 再进行反序列化即可

    需要注意，之前没有定义序列化版本号时序列化后的对象都无法再反序列化回来，所以若写入了文件，可将之前的那些文件都删除，避免读取即可。
     */
    //static final long serialVersionUID = 1;

    public User() {
    }

    public User(String username, String password, String nickname, int age) {
        this.username = username;
        this.password = password;
        this.nickname = nickname;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
